import request from '@/utils/request'

/**
 * 用户报名活动
 * @param {Object} data 报名数据
 * @returns {Promise}
 */
export function registerActivity(data) {
  return request({
    url: '/registration',
    method: 'post',
    data
  })
}

/**
 * 取消报名
 * @param {number} id 报名ID
 * @returns {Promise}
 */
export function cancelRegistration(id) {
  return request({
    url: `/registration/${id}`,
    method: 'put',
    data: {
      status: 3 // 取消状态
    }
  })
}

/**
 * 分页查询活动报名列表
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function pageActivityRegistrations(params) {
  return request({
    url: '/registration/activity',
    method: 'get',
    params
  })
}

/**
 * 分页查询用户报名列表
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function pageUserRegistrations(params) {
  return request({
    url: '/registration/user',
    method: 'get',
    params
  })
}

/**
 * 审核报名
 * @param {Object} data 审核数据 {id, status, remark}
 * @returns {Promise}
 */
export function auditRegistration(data) {
  return request({
    url: `/registration/audit`,
    method: 'put',
    data
  })
}

/**
 * 判断用户是否报名活动
 * @param {Number} activityId 活动ID
 * @returns {Promise}
 */
export function isRegistered(activityId) {
  return request({
    url: '/registration/isRegistered',
    method: 'get',
    params: {
      activityId
    }
  })
}

/**
 * 获取用户的报名信息
 * @param {Number} activityId 活动ID
 * @returns {Promise}
 */
export function getUserRegistration(activityId) {
  return request({
    url: '/registration/user/detail',
    method: 'get',
    params: {
      activityId
    }
  })
}

/**
 * 获取报名统计数据
 * @returns {Promise}
 */
export function getRegistrationStats() {
  return request({
    url: '/registration/stats',
    method: 'get'
  })
}

/**
 * 用户自助签到
 * @param {number} id 报名ID
 * @returns {Promise}
 */
export function checkInRegistration(id) {
  return request({
    url: `/registration/user-check-in/${id}`,
    method: 'post'
  })
}

/**
 * 获取用户的报名记录
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getUserRegistrationList(params) {
  return request({
    url: '/registration/user/list',
    method: 'get',
    params
  })
}

/**
 * 获取活动的报名记录
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getActivityRegistrations(params) {
  return request({
    url: '/registration/activity',
    method: 'get',
    params
  })
}

/**
 * 分页查询报名记录
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function pageRegistrations(params) {
  return request({
    url: '/registration/page',
    method: 'get',
    params
  })
}

/**
 * 导出报名数据
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function exportRegistrations(params) {
  return request({
    url: '/registration/export',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 获取用户的报名状态
 * @param {number} activityId 活动ID
 * @returns {Promise}
 */
export function getRegistrationStatus(activityId) {
  return request({
    url: '/registration/status',
    method: 'get',
    params: { activityId }
  })
}

/**
 * 获取报名列表（管理员）
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getRegistrationList(params) {
  return request({
    url: '/registration/admin/list',
    method: 'get',
    params
  })
}

/**
 * 获取用户信息
 * @param {Number} id 用户ID
 * @returns {Promise}
 */
export function getUserInfo(id) {
  return request({
    url: `/user/info/${id}`,
    method: 'get'
  })
}

/**
 * 获取报名活动信息
 * @param {Number} id 活动ID
 * @returns {Promise}
 */
export function getActivityInfo(id) {
  return request({
    url: `/activity/info/${id}`,
    method: 'get'
  })
}

/**
 * 更新报名状态（审核）
 * @param {Number} registrationId - 报名ID
 * @param {Number} status - 报名状态：0-待审核，1-已通过，2-已拒绝
 * @returns {Promise}
 */
export function updateRegistrationStatus(registrationId, status) {
  return request({
    url: `/registration/status/${registrationId}`,
    method: 'put',
    data: { status }
  })
}

/**
 * 更新签到状态
 * @param {Number} registrationId - 报名ID
 * @param {Number} checkInStatus - 签到状态：0-未签到，1-已签到
 * @returns {Promise}
 */
export function updateCheckInStatus(registrationId, checkInStatus) {
  return request({
    url: `/registration/checkIn/${registrationId}`,
    method: 'put',
    data: { checkInStatus }
  })
}

/**
 * 获取报名详情
 * @param {Number} registrationId - 报名ID
 * @returns {Promise}
 */
export function getRegistrationDetail(registrationId) {
  return request({
    url: `/registration/${registrationId}`,
    method: 'get'
  })
}

/**
 * 获取活动报名统计
 * @param {Number} activityId - 活动ID
 * @returns {Promise}
 */
// export function getRegistrationStats(activityId) {
//   return request({
//     url: `/registration/stats/${activityId}`,
//     method: 'get'
//   })
// }

/**
 * 获取活动报名人数
 * @param {number} activityId 活动ID
 * @returns {Promise}
 */
export function getActivityRegistrationCount(activityId) {
  return request({
    url: `/registration/count/${activityId}`,
    method: 'get'
  })
}

/**
 * 检查用户是否已报名活动
 * @param {number} activityId 活动ID
 * @returns {Promise}
 */
export function checkUserRegistered(activityId) {
  return request({
    url: `/registration/check/${activityId}`,
    method: 'get'
  })
}
